package com.cs.beneficios.web.action;
import com.cs.beneficios.business.entity.ReporteTotalGrupoFamiliarDAO;
import com.cs.beneficios.business.model.ReporteGrupoFamiliarVO;
import com.cs.beneficios.common.ConnectionFactory;
import java.sql.SQLException;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
//import org.apache.struts.action.ActionError;
//import org.apache.struts.action.ActionErrors;
import java.io.IOException;
import javax.servlet.ServletException;

public class ReportGenerationRGFAction extends Action 
{
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   * @return 
   * @throws java.io.IOException
   * @throws javax.servlet.ServletException
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
  {
    HttpSession session = request.getSession();
    //ConnectionFactory cf = new ConnectionFactory("beneficios","beneficios");
	ConnectionFactory cf = new ConnectionFactory();
    
    Collection coReporte = null;
    Collection coReporteNoBene = null;
    List lListFilters = new LinkedList();
    lListFilters = (List)session.getAttribute("ListFiltrado");
    
    String strCodeZona = (String)session.getAttribute("CodeZona");
    String strCodeComuna = (String)session.getAttribute("CodeComuna");
    String strCodeBarrio = (String)session.getAttribute("CodeBarrio");
    String strCodePrograma = (String)session.getAttribute("CodePrograma");
    String strCodeSubPrograma = (String)session.getAttribute("CodeSubPrograma");
    String strInitialDate = "";
    String strFinalDate = "";
    
    ReporteTotalGrupoFamiliarDAO objReportGrupo = null;
    
    // fecha inicial
    Object obDayIni = (Object)session.getAttribute("DayIni");
    String strDayIni = (String)obDayIni;
    Object obMonthIni = (Object)session.getAttribute("MonthIni");
    String strMonthIni = (String)obMonthIni;
    Object obYearIni = (Object)session.getAttribute("YearIni");
    String strYearIni = (String)obYearIni;
    // fecha final
    Object obDayFin = (Object)session.getAttribute("DayFin");
    String strDayFin = (String)obDayFin;
    Object obMonthFin = (Object)session.getAttribute("MonthFin");
    String strMonthFin = (String)obMonthFin;
    Object obYearFin = (Object)session.getAttribute("YearFin");
    String strYearFin = (String)obYearFin; 
    
    if(obDayIni!=null && obMonthIni!=null && obYearIni!=null)
      strInitialDate = strDayIni+"/"+strMonthIni+"/"+strYearIni;
    
    if(obDayFin!=null && obMonthFin!=null && obYearFin!=null)
        strFinalDate = strDayFin+"/"+strMonthFin+"/"+strYearFin;
      
    // Proceso para obtener los criterios de busqueda
    ReporteGrupoFamiliarVO objReportGrupoVO = new ReporteGrupoFamiliarVO();
    if(strCodeZona != null)
      objReportGrupoVO.setCodeZona(new Long(strCodeZona));
    if(strCodeComuna != null)
      objReportGrupoVO.setCodeComuna(new Long(strCodeComuna));
    if(strCodeBarrio != null)
      objReportGrupoVO.setCodeBarrio(new Long(strCodeBarrio));
    if(strCodePrograma != null)
      objReportGrupoVO.setCodePrograma(new Long(strCodePrograma));
    if(strCodeSubPrograma != null)
      objReportGrupoVO.setCodeSubprograma(new Long(strCodeSubPrograma));
    if(strInitialDate != "")
      objReportGrupoVO.setDesde(strInitialDate);
    if(strFinalDate != "")
      objReportGrupoVO.setHasta(strFinalDate);  
    // Fin del proceso
    
    
    try
    {
      // Proceso para obtener la informaci�n del reporte
      objReportGrupo = new ReporteTotalGrupoFamiliarDAO(cf);
      coReporte = objReportGrupo.getReportGrupoFamiliar(objReportGrupoVO,lListFilters);
      cf.closeConnection(objReportGrupo.getConn());
      // Fin del proceso
      
    }catch(SQLException e)
    {
		System.err.println("/******** TDSUB - cwsub");
		e.printStackTrace();
		System.err.println("TDSSPE - cwsub ********/");
    }
    
    
    if(coReporte != null && coReporte.size() != 0)
      session.setAttribute("ListReportGrupoFam",coReporte);
    else
      request.setAttribute("msgerror", "No hay registros que cumplan con las condiciones seleccionadas");
      
    return mapping.findForward("success");
  }
}